jQuery এর $.when() একটি গুরুত্বপূর্ণ ফাংশন যা একাধিক asynchronous (অ্যাসিঙ্ক্রোনাস) অপারেশন পরিচালনা করতে সহায়তা করে। এটি সাধারণত AJAX কল বা অন্যান্য ডিফার্ড (deferred) অবজেক্টের জন্য ব্যবহার করা হয়। চেইনড AJAX কল এর মাধ্যমে একাধিক AJAX অনুরোধ ক্রমানুসারে সম্পন্ন করা যায়। এই টিউটোরিয়ালে আমরা $.when() এবং চেইনড AJAX কলের ব্যবহার ব্যাখ্যা করব।
$.when() ফাংশনের পরিচিতি
$.when() কী?
$.when() একটি deferred.promise() অবজেক্ট ব্যবহার করে, যেখানে একাধিক অ্যাসিঙ্ক্রোনাস কাজ (যেমন AJAX কল) সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করে। এটি মূলত একাধিক কাজ সমাপ্ত হওয়ার পর একটি নির্দিষ্ট ফাংশন (callback) চালায়।
Syntax:
$.when(deferred1, deferred2, ..., deferredN).done(callback);
প্যারামিটার:
- deferred1, deferred2, ..., deferredN: এক বা একাধিক ডিফার্ড অবজেক্ট বা AJAX কল।
- callback: সমস্ত deferred সম্পন্ন হলে চালানো হয়।
$.when() উদাহরণ
একাধিক AJAX কল পরিচালনা:
$.when(
$.ajax("/api/data1"),
$.ajax("/api/data2")
).done(function(response1, response2) {
console.log("Data1:", response1);
console.log("Data2:", response2);
}).fail(function() {
console.log("One or more requests failed.");
});
কীভাবে কাজ করে:
- দুটি AJAX কল (data1 এবং data2) সমান্তরালভাবে (parallel) চালানো হবে।
- যখন উভয় কল সম্পন্ন হবে, তখন done ফাংশনটি চালানো হবে।
- যদি কোনো কল ব্যর্থ হয়, তাহলে fail ব্লকটি চালানো হবে।
চেইনড AJAX কল
চেইনড AJAX কল ব্যবহার করা হয় যখন একটি AJAX অনুরোধ সফলভাবে সম্পন্ন হওয়ার পরে অন্য একটি AJAX কল চালানো হয়। এটি সিরিয়ালভাবে (serial) একাধিক AJAX কল সম্পন্ন করতে সহায়তা করে।
চেইনড AJAX কলের উদাহরণ
$.ajax({
url: "/api/data1",
method: "GET"
}).done(function(response1) {
console.log("Data1:", response1);
// দ্বিতীয় AJAX কল
return $.ajax({
url: "/api/data2",
method: "GET"
});
}).done(function(response2) {
console.log("Data2:", response2);
// তৃতীয় AJAX কল
return $.ajax({
url: "/api/data3",
method: "GET"
});
}).done(function(response3) {
console.log("Data3:", response3);
}).fail(function() {
console.log("An error occurred during the AJAX chain.");
});
কীভাবে কাজ করে:
- প্রথম AJAX কল
/api/data1সফল হলে দ্বিতীয় কল শুরু হবে। - দ্বিতীয় কল
/api/data2সফল হলে তৃতীয় কল শুরু হবে। - যদি কোনো কল ব্যর্থ হয়, তাহলে fail ব্লকটি ট্রিগার হবে।
$.when() বনাম চেইনড AJAX কল
| বৈশিষ্ট্য | $.when() | চেইনড AJAX কল |
|---|---|---|
| ব্যবহার | একাধিক অ্যাসিঙ্ক্রোনাস কল সমান্তরালে চালানোর জন্য। | কলগুলো ক্রমানুসারে চালানোর জন্য। |
| সমাপ্তির শর্ত | সব কল একসাথে সম্পন্ন হলে। | প্রথম কল শেষ হলে পরবর্তী কল শুরু হয়। |
| উপযোগিতা | স্বাধীন কলের জন্য যেখানে পরস্পরের উপর নির্ভরশীল নয়। | ডিপেনডেন্ট কলের জন্য যেখানে আগের কলের আউটপুট প্রয়োজন। |
| কোড জটিলতা | তুলনামূলকভাবে কম। | বেশি কারণ প্রত্যেক কলের জন্য নতুন ব্লক প্রয়োজন। |
$.when() এবং চেইনড AJAX কল একত্রে ব্যবহার
আপনি $.when() এবং চেইনড AJAX কল একত্রে ব্যবহার করতে পারেন যদি কোনো নির্দিষ্ট ক্রমে নির্ভরশীল কল চালানোর পাশাপাশি অন্য কলগুলো সমান্তরালে চালাতে চান।
উদাহরণ:
$.when(
$.ajax("/api/data1"),
$.ajax("/api/data2")
).done(function(response1, response2) {
console.log("Parallel Calls Complete:");
console.log("Data1:", response1);
console.log("Data2:", response2);
// চেইনড কল শুরু
$.ajax("/api/data3").done(function(response3) {
console.log("Chained Call Complete:");
console.log("Data3:", response3);
});
}).fail(function() {
console.log("One of the parallel calls failed.");
});
সারাংশ
$.when()একাধিক অ্যাসিঙ্ক্রোনাস কল পরিচালনার জন্য ব্যবহার হয়, যেখানে সবগুলো কল সমাপ্ত হওয়ার পর একযোগে কাজ করা হয়।- চেইনড AJAX কল ক্রমানুসারে কল চালানোর জন্য উপযুক্ত, যেখানে এক কলের আউটপুট পরবর্তী কলের জন্য প্রয়োজন।
- সঠিক পরিস্থিতিতে
$.when()এবং চেইনড AJAX কল একত্রে ব্যবহার করে আরও কার্যকর সমাধান তৈরি করা যায়।
এই কৌশলগুলো ব্যবহারে আপনার ওয়েব অ্যাপ্লিকেশন আরও মসৃণ এবং কার্যকর হবে।
Read more